Dokumentation anzeigen

Der Tabellenpflegedialog hat einige kleine Ungereimtheiten. Dazu gehört zum Beispiel auch, dass man keine Möglichkeiten hat, die Dokumentation der Tabelle anzusehen. Wäre das so, so könnte man hier den Zweck und Pflegehinweise hinterlegen. Mit einer kleinen Programmierung – die zwecks Mehrfachverwendung einfach in einer Methode gekapselt werden kann – wird dem Anwender die Hilfe in einem Docking-Fenster angezeigt.

So sieht das Ergebnis in etwa aus:

Vorgehen

Gehen Sie in den Tabellenpflegedialog und wählen Sie Umfeld – Modifikation – Zeitpunkte.

Tragen Sie dann den Zeitpunkt “19” ein:

Springen Sie in den Editor und legen Sie das folgende Coding an:

*** GLOBALE DATEN
DATA gr_docking TYPE REF TO cl_gui_docking_container.
DATA gr_control TYPE REF TO cl_gui_html_viewer.
DATA gt_lines   TYPE STANDARD TABLE OF tline.

*&---------------------------------------------------------------------*
*&      Form  zz_show_docu
*&---------------------------------------------------------------------*
FORM zz_show_docu.

*** LOKALE DATEN
  DATA lv_size     TYPE i.
  DATA ls_header   TYPE thead.
  DATA lt_html     TYPE STANDARD TABLE OF  htmlline.
  DATA lv_url      TYPE c LENGTH 500.
  DATA lv_viewname TYPE dokhl-object.

*** DOCKING CONTROL BEREITS ERZEUGT?
  IF gr_docking IS INITIAL.
    MOVE x_header-viewname TO lv_viewname.

*** Lesen der Doku zur Tabelle
    CALL FUNCTION 'DOCU_GET'
      EXPORTING
        id     = 'TB'
        langu  = sy-langu
        object = lv_viewname
      IMPORTING
        head   = ls_header
      TABLES
        line   = gt_lines
      EXCEPTIONS
        OTHERS = 5.

    IF gt_lines IS INITIAL.
*** Keine Doku da: Control mit größe 0 erzeugen
      lv_size = 0.
    ELSE.
*** Doku vorhanden: Breite 400 Pixel
      lv_size = 400.
    ENDIF.

*** Dockingcontainer erzeugen
    CREATE OBJECT gr_docking
      EXPORTING
        side                    = cl_gui_docking_container=>dock_at_right
        extension               = lv_size
        no_autodef_progid_dynnr = 'X'.

    IF gt_lines IS NOT INITIAL.

*** HTML-Control erzeugen
      CREATE OBJECT gr_control
        EXPORTING
          parent = gr_docking.

*** Doku in HTML umwandeln
      CALL FUNCTION 'CONVERT_ITF_TO_HTML'
        EXPORTING
          i_header       = ls_header
        TABLES
          t_itf_text     = gt_lines
          t_html_text    = lt_html
        EXCEPTIONS
          syntax_check   = 1
          replace        = 2
          illegal_header = 3
          OTHERS         = 4.
      IF sy-subrc = 0.
*** HTML-Daten ins Control schieben
        CALL METHOD gr_control->load_data
          IMPORTING
            assigned_url = lv_url
          CHANGING
            data_table   = lt_html
          EXCEPTIONS
            OTHERS       = 4.
        IF sy-subrc = 0.
*** Und HTML-Text anzeigen
          CALL METHOD gr_control->show_url
            EXPORTING
              url = lv_url.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.

ENDFORM.

Hinweis:
Wenn man in die Tabellenpflege mit SM30 einsteigt, dann bleibt der Dockingcontainer erhalten. Machen Sie am besten eine Transaktion daraus und dann sieht es wirklich professionell aus.

Viewcluster

Bei der Verwendung in einem Viewcluster muss der Zeitpunkt 03 verwendet werden.

Viewcluster benötigen ein eigenes Programm, in dem das Coding abgelegt wird. Hier muss das Include LSVCMCOD eingebunden werden, damit Sie Zugriff auf alle notwendigen Daten des Viewclusters haben.

Tipp:
Lagern Sie die Funktion in eine Methode aus und übergeben Sie den Namen der gerade aktiven Tabelle (VCL_AKT_VIEW). Dann können Sie in der Methode prüfen, ob die Tabelle gewechselt wurde und in diesem Fall die entsprechende Dokumentation nachlesen.

Tipps zur Formatierung

Das Layout des Textes ist nacktes HTML und entspricht so gar nicht dem der üblichen Hilfe in SAP. Wenn du die Formatierung anpassen möchtest, kannst du dir die Klasse CL_EPSS_SAPEVENT bzw. deren Methode LINES_DISPLAY mal ansehen. Hier wird der HTML-Text für die SAP Hilfe generiert. Verwendet werden hierfür die Funktiosnbausteine SE_CONVERT_ITF_TO_HTML und EPSS_STYLE_RECEIVE. Das Umwandeln von SAP-Ikonen wurde zwar auch versuchsweise nachgebaut, ist für die Anzeige aber eher nur nettes Beiwerk.

Enno Wulff

COMMENTS

  • <cite class="fn">mbibbia</cite>

    Für Zeitpunkt 13 kann zusätzlîch z.B. die FORM ZZ_AT_LEAVE implementiert werden, um den Docking Container zu initialisieren. Damit bleibt dieser auch beim Verlassen in SM30 nicht stehen.

    FORM zz_at_leave.

    gr_docking->free( ).
    clear gr_docking.

    ENDFORM.

Leave a Comment